package com.sz.framework;

import com.sz.framework.utils.CommonUtil;
import com.sz.framework.config.SzConfig;
import com.sz.framework.listener.SzListenerManager;
import com.sz.framework.log.SzLog;
import com.sz.framework.log.SzLogConsole;

/**
 * 框架全局组件管理器
 *
 * @author: yxl
 * 2025-07-22
 */
public class SzManager {

    /**
     * 版本信息
     */
    public static final String VERSION = "1.0-SNAPSHOT";

    /**
     * 日志组件
     */
    public volatile static SzLog log = new SzLogConsole();

    public static void setLog(SzLog log){
        SzManager.log = log;
    }

    public static SzLog getLog(){
        return SzManager.log;
    }


    /**
     * 全局配置信息
     */
    public volatile static SzConfig config;

    public static SzConfig getConfig(){
        return config;
    }

    public static void setConfig(SzConfig config){
        setConfigMethod(config);
        // 打印banner
        if(config != null && config.getPrintBanner()){
            CommonUtil.printBanner();
        }
        // 是否打印彩色日志
        if(config != null && config.getPrintLog() != null && config.getPrintLog() && config.getPrintColorLog() == null){
            config.setPrintColorLog(CommonUtil.canPrintColorLog());
        }
        // 全局事件
        SzListenerManager.afterSetConfig(config);
    }

    private static void setConfigMethod(SzConfig config){
        SzManager.config = config;
    }

}
